from bs4 import BeautifulSoup
import requests
import csv

# 发送请求获取网页源代码
url = "http://www.sdprice.org.cn/f/number_price-vegetables33.html?pageNo=1"
head = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"
}
resp = requests.get(url, headers=head)

# 将源代码放入BeautifulSoup 解析数据, 生成bs 对象
page = BeautifulSoup(resp.text, "html.parser")

# 在bs 对象中查找数据
# 查找数据所在的div
div_data = page.findAll('div', attrs={"class": "panel-body"})[2]

# 从div 数据中查找数据名
name_data = div_data.find_all_next("h3", attrs={"class": "ti_name"})

# 从div 数据中查找数据名对应的价格 使用切片筛选
# 1:, 从索引为1 开始所有数据
# :, 分隔 1: 与 3
# 3, 步长
price_data = div_data.find_all_next("span", attrs={})[1::3]

# 将数据写入csv 文件中
f = open("vegetables_data.csv", mode="w", encoding="utf-8")
csv_writer = csv.writer(f)

# 遍历两个列表中的内容
# for 中的zip() 函数, 将两个变量赋值
for name, price in zip(name_data, price_data):
    # 数据存入csv 文件中
    csv_writer.writerow([name.text, price.text.strip()])

f.close()
resp.close()
print("over")


